home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today (UK) (Spanish) 1 / CD ROM TODAY.iso / crt / setup.mst < prev    next >
Text File  |  1994-07-20  |  18KB  |  516 lines

  1. '**************************************************************************
  2. '*              "How to Make Computers Work for You" setup proceedure
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  10.  
  11. ''Application constants and defaults
  12. CONST APPTITLE          = "How to Make Computers Work for You"  ''Title to display while installing app
  13. CONST APPDRIVE          = "C:"                                  ''Default drive for app
  14. CONST APPPATH           = "\MCWFY\"                             ''Default path for app
  15. CONST APPSIZE           = 1000000                               ''Approx. size of application files (for drive space warning)
  16. CONST INIFILE           = "MCWFY.INI"                           ''INI file for app info
  17. CONST PROGGROUP         = "CRT Applications"                    ''Name of program group for app
  18. CONST PROGITEM          = "HOW TO - Computers"                  ''Name of program item for app
  19. CONST PROGEXE           = "MCW.EXE"                             ''Executable file for app
  20. CONST DRVTITLE          = "Video for Windows Runtime Drivers"   ''Title to display whil installing VfW drivers
  21. CONST INSTPATH          = "\CRT\"                               ''Optional installation directory path
  22.  
  23. ''Dialog ID's
  24. CONST DLG_WELCOME       = 100
  25. CONST DLG_ASKQUIT       = 200
  26. CONST DLG_DESTPATH      = 300
  27. CONST DLG_EXITFAILURE   = 400
  28. CONST DLG_EXITQUIT      = 600
  29. CONST DLG_EXITSUCCESS   = 700
  30. CONST DLG_APPHELP       = 900
  31. CONST DLG_CDPATH        = 1000
  32. CONST DLG_DESTTOOSMALL  = 1100
  33. CONST DLG_WINTOOSMALL   = 1200
  34. CONST DLG_RECPATH       = 1300
  35. CONST DLG_REGISTER      = 1400
  36. CONST DLG_RESTART       = 2600
  37. CONST DLG_RESTARTOPT    = 2700
  38. CONST DLG_BADPATH       = 6400
  39.  
  40. ''Bitmap ID
  41. CONST LOGO = 1
  42.  
  43. GLOBAL SizeReq&  '' Total Disk Size required for installation
  44.  
  45. GLOBAL DESTPATH$        ''Destination path
  46. GLOBAL DESTDRIVE$       ''Destination drive
  47. GLOBAL CDPATH$          ''CD-ROM path
  48. GLOBAL CDDRIVE$         ''CD-ROM drive
  49. GLOBAL RECPATH$         ''Student record path
  50. GLOBAL RECDRIVE$        ''Student record drive
  51. GLOBAL WINPATH$         ''Windows path
  52. GLOBAL WINSYSPATH$      ''Windows system path
  53. GLOBAL WINDRIVE$        ''Windows drive
  54.  
  55. DECLARE SUB InstallApp
  56. DECLARE SUB BuildVfW
  57. DECLARE SUB InstallVfW
  58. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  59. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  60. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  61. DECLARE SUB Reboot LIB "iniupd.dll"
  62. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  63.  
  64.  
  65.  
  66. INIT:
  67.         ''Set constants
  68.         CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  69.         HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  70.  
  71.         ''Windows paths
  72.         WINPATH$=GetWindowsDir()
  73.         WINSYSPATH$=GetWindowsSysDir()
  74.         WINDRIVE$=MID$(WINPATH$, 1, 1)
  75.  
  76.         ''Check windows version
  77.         WIN32ENABLED% = 0
  78.         MajorVer% = GetWindowsMajorVersion()
  79.         MinorVer% = GetWindowsMinorVersion()
  80.  
  81.         IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  82.             i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  83.             END
  84.         END IF
  85.  
  86.         IF OnWindowsNT() THEN
  87.               i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  88.               END
  89.         END IF
  90.  
  91.  
  92.         SetBitmap CUIDLL$, LOGO
  93.         SetTitle APPTITLE
  94.  
  95.         szInf$ = GetSymbolValue("STF_SRCINFPATH")
  96.         IF szInf$ = "" THEN
  97.             szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  98.         END IF
  99.         ReadInfFile szInf$
  100.  
  101.         ''Default destination path
  102.         DESTPATH$=APPDRIVE+APPPATH      ''default
  103.         GetLocalHardDrivesList "HARDDRIVE"
  104.         if GetListLength("HARDDRIVE")>0 then
  105.                 DESTPATH$=GetListItem("HARDDRIVE", 1)+":"+APPPATH
  106.         end if
  107.  
  108.         ''Default CD-ROM path
  109.         ''Note: CD-ROMS look like read-only network drives.
  110.         CDPATH$="D:"+INSTPATH   ''default
  111.         GetNetworkDrivesList "NETWORKDRIVE"
  112.         if GetListLength("NETWORKDRIVE")>0 then
  113.                 for i%=1 to GetListLength("NETWORKDRIVE") step 1
  114.                         temp$=GetListItem("NETWORKDRIVE",i%)+":"
  115.                         if IsDirWritable(temp$) = 0 then
  116.                                 CDPATH$=temp$+INSTPATH
  117.                         end if
  118.                 next i%
  119.         end if
  120.  
  121.         ''Default Student record path
  122.         RECPATH$="A:\"  ''default
  123.         GetRemovableDrivesList "REMOVABLEDRIVE"
  124.         if GetListLength("REMOVABLEDRIVE")>0 then
  125.                 RECPATH$=GetListItem("REMOVABLEDRIVE", 1)+":\"
  126.         end if
  127.  
  128.  
  129. '' Welcome dialog
  130. WELCOME:
  131.         sz$ = UIStartDlg(CUIDLL$, DLG_WELCOME, "FInfoDlgProc", DLG_APPHELP, HELPPROC$)
  132.         IF sz$ = "CONTINUE" THEN
  133.                 UIPop 1
  134.         ELSE
  135.                 GOSUB ASKQUIT
  136.                 GOTO WELCOME
  137.         END IF
  138.  
  139. ''Check space on windows drive
  140.         BuildVfW
  141.         SizeReq& = GetCopyListCost ("","", "")
  142.         IF SizeReq& <> 0 THEN
  143.             GOSUB WINTOOSMALL
  144.             ERROR STFQUIT
  145.         END IF
  146.  
  147.  
  148. '' Get destination path
  149. GETDEST:
  150.         SetSymbolValue "EditTextIn", DESTPATH$
  151.         SetSymbolValue "EditFocus", "END"
  152. GETDESTL1:
  153.         sz$ = UIStartDlg(CUIDLL$, DLG_DESTPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  154.         DESTPATH$ = GetSymbolValue("EditTextOut")
  155.         DESTDRIVE$ = MID$(DESTPATH$, 1, 1)
  156.  
  157.         IF sz$ = "CONTINUE" THEN
  158.             IF IsDirWritable(DESTPATH$) = 0 THEN
  159.                     GOSUB BADPATH
  160.                     GOTO GETDESTL1
  161.             ELSEIF IsDriveValid(DESTDRIVE$)=0 THEN
  162.                     GOSUB BADPATH
  163.                     GOTO GETDESTL1
  164.             END IF
  165.             UIPop 1
  166.         ELSEIF sz$ = "REACTIVATE" THEN
  167.                 GOTO GETDESTL1
  168.         ELSE
  169.                 GOSUB ASKQUIT
  170.                 GOTO GETDEST
  171.         END IF
  172.  
  173. ''Check space on destination drive
  174.         DiskSize&=GetFreeSpaceForDrive(MID$(DESTPATH$,1,1))
  175.  
  176.         If GetFreeSpaceForDrive(WINDRIVE$)< APPSIZE then
  177.             GOSUB DESTTOOSMALL
  178.             GOTO GETDEST
  179.         EndIf
  180.  
  181.  
  182. '' Get CD path
  183. GETCD:
  184.         SetSymbolValue "EditTextIn", CDPATH$
  185.         SetSymbolValue "EditFocus", "END"
  186. GETCDL1:
  187.         sz$ = UIStartDlg(CUIDLL$, DLG_CDPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  188.         CDPATH$ = GetSymbolValue("EditTextOut")
  189.         CDDRIVE$ = MID$(CDPATH$, 1, 1)
  190.  
  191.         IF sz$ = "CONTINUE" THEN
  192.              IF IsDirWritable(CDPATH$) THEN
  193.                      GOSUB BADPATH
  194.                      GOTO GETCDL1
  195.              ELSEIF IsDriveValid(CDDRIVE$)=0 THEN
  196.                      GOSUB BADPATH
  197.                      GOTO GETCDL1
  198.              END IF
  199.             UIPop 1
  200.         ELSEIF sz$ = "BACK" THEN
  201.                 UIPop 1
  202.                 GOTO GETDEST
  203.         ELSEIF sz$ = "REACTIVATE" THEN
  204.                 GOTO GETCDL1
  205.         ELSE
  206.                 GOSUB ASKQUIT
  207.                 GOTO GETCD
  208.         END IF
  209.  
  210.  
  211. '' Get Record path - removed 11/5/94
  212. ''GETREC:
  213. ''        SetSymbolValue "EditTextIn", RECPATH$
  214. ''        SetSymbolValue "EditFocus", "END"
  215. ''GETRECL1:
  216. ''        sz$ = UIStartDlg(CUIDLL$, DLG_RECPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$)
  217. ''        RECPATH$ = GetSymbolValue("EditTextOut")
  218. ''        RECDRIVE$ = MID$(RECPATH$, 1, 1)
  219. ''
  220. ''        IF sz$ = "CONTINUE" THEN
  221. ''            IF IsDriveValid(RECDRIVE$)=0 THEN
  222. ''                    GOSUB BADPATH
  223. ''                    GOTO GETRECL1
  224. ''            END IF
  225. ''            UIPop 1
  226. ''        ELSEIF sz$ = "BACK" THEN
  227. ''                UIPop 1
  228. ''                GOTO GETCD
  229. ''        ELSEIF sz$ = "REACTIVATE" THEN
  230. ''                GOTO GETRECL1
  231. ''        ELSE
  232. ''                GOSUB ASKQUIT
  233. ''                GOTO GETREC
  234. ''        END IF
  235.  
  236.  
  237. '' Registration prompt
  238. REGISTER:
  239.         sz$ = UIStartDlg(CUIDLL$, DLG_REGISTER, "FInfoDlgProc", DLG_APPHELP, HELPPROC$)
  240.  
  241.         IF sz$ = "CONTINUE" THEN
  242.             UIPop 1
  243.         ELSEIF sz$ = "BACK" THEN
  244.                 UIPop 1
  245.                 GOTO GETCD
  246.         ELSEIF sz$ = "REACTIVATE" THEN
  247.                 GOTO REGISTER
  248.         ELSE
  249.                 GOSUB ASKQUIT
  250.                 GOTO GETCD
  251.         END IF
  252.  
  253.  
  254.  
  255. '' Do installation
  256.         CreateDir DESTPATH$, cmoNone
  257.         OpenLogFile MakePath(DESTPATH$, "SETUP.LOG"), 0
  258.  
  259.         InstallApp
  260.         InstallVfW
  261.  
  262.         WriteToLogFile "Final error state: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL)
  263.         CloseLogFile
  264.  
  265.  
  266. '' The following bit of code is copied (more or less) verbatim from the VFW 1.1
  267. '' setup. I can't so how it can work because _msrstst.exe & _mssetup.bat don't
  268. '' appear to exist. MJP 24/3/94
  269. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  270. '' else, it gives the user the choice
  271.         DEST$ = GetWindowsDir()
  272.         RESTRT% = RestartListEmpty ()
  273.         Exe$ = DEST$ + "\_msrstrt.exe"
  274.         Batch$ = DEST$ + "\_mssetup.bat"
  275.         empty$ = ""
  276. RESTART:
  277.         IF RESTRT% = 0 THEN
  278.                sz$ = UIStartDlg(cuidll$, DLG_RESTART, "FInfo0DlgProc", 0, "")
  279.                IF sz$ = "REACTIVATE" THEN
  280.                       GOTO RESTART
  281.                ENDIF
  282.                I% = ExitExecRestart ()
  283.                RemoveFile Exe$, cmoForce
  284.                RemoveFile Batch$, cmoForce
  285.                END
  286.         ELSE
  287.                 sz$ = UIStartDlg(CUIDLL$, DLG_RESTARTOPT, "FQuitDlgProc", 0, "")
  288.                 IF sz$ = "CONTINUE" THEN
  289.                         I% = ExitWindowsExec (Exe$, empty$)
  290.                         IF I% = 0 THEN
  291.                                 GOTO RESTART
  292.                         ELSE
  293.                                 END
  294.                         ENDIF
  295.                 ELSEIF sz$ = "EXIT" THEN
  296.                         UIPopAll
  297.                        END
  298.                 ELSEIF sz$ = "REACTIVATE" THEN
  299.                         GOTO RESTART
  300.                 ELSE
  301.                         UIPop 1
  302.                 END IF
  303.         END IF
  304.  
  305. QUIT:
  306.         ON ERROR GOTO ERRQUIT
  307.  
  308.         IF ERR = 0 THEN
  309.                 dlg% = DLG_EXITSUCCESS
  310.         ELSEIF ERR = STFQUIT THEN
  311.                 dlg% = DLG_EXITQUIT
  312.         ELSE
  313.                 OpenLogFile MakePath(DESTPATH$, "SETUP.ERR"), 0
  314.                 WriteToLogFile "Error on quitting: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL)
  315.                 CloseLogFile
  316.                 dlg% = DLG_EXITFAILURE
  317.         END IF
  318. QUITL1:
  319.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  320.         IF sz$ = "REACTIVATE" THEN
  321.                 GOTO QUITL1
  322.         END IF
  323.         UIPop 1
  324.  
  325.         END
  326.  
  327. ERRQUIT:
  328.         i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  329.         END
  330.  
  331.  
  332. BADPATH:
  333.         sz$ = UIStartDlg(CUIDLL$, DLG_BADPATH, "FInfo0DlgProc", 0, "")
  334.         IF sz$ = "REACTIVATE" THEN
  335.                 GOTO BADPATH
  336.         END IF
  337.         UIPop 1
  338.         RETURN
  339.  
  340.  
  341.  
  342. ASKQUIT:
  343.         sz$ = UIStartDlg(CUIDLL$, DLG_ASKQUIT, "FQuitDlgProc", 0, "")
  344.  
  345.         IF sz$ = "EXIT" THEN
  346.                 UIPopAll
  347.                 ERROR STFQUIT
  348.         ELSEIF sz$ = "REACTIVATE" THEN
  349.                 GOTO ASKQUIT
  350.         ELSE
  351.                 UIPop 1
  352.         END IF
  353.         RETURN
  354.  
  355.  
  356.  
  357. '' Not enough space on windows drive
  358. WINTOOSMALL:
  359.     sz$ = UIStartDlg(CUIDLL$, DLG_WINTOOSMALL, "FInfo0DlgProc", 0, "")
  360.     IF sz$ = "REACTIVATE" THEN
  361.         GOTO WINTOOSMALL
  362.     END IF
  363.     UIPop 1
  364.     RETURN
  365.  
  366. '' Not enough space on destinition drive
  367. DESTTOOSMALL:
  368.     sz$ = UIStartDlg(CUIDLL$, DLG_DESTTOOSMALL, "FInfo0DlgProc", 0, "")
  369.     IF sz$ = "REACTIVATE" THEN
  370.         GOTO DESTTOOSMALL
  371.     END IF
  372.     UIPop 1
  373.     RETURN
  374.  
  375.  
  376. '**
  377. '** Purpose:
  378. '**     Builds the copy list for Video for Windows runtime drivers
  379. '** Arguments:
  380. '**     none.
  381. '** Returns:
  382. '**     none.
  383. '*************************************************************************
  384. SUB BuildVfW STATIC
  385.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  386.  
  387.         ClearCopyList
  388.         AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WINSYSPATH$
  389.         AddSectionFilesToCopyList "OLE2", SrcDir$, WINSYSPATH$
  390.         AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WINSYSPATH$
  391.         AddSectionFilesToCopyList "MPlayer", SrcDir$, WINPATH$
  392.         AddSectionFilesToCopyList "AVICodecs", SrcDir$, WINSYSPATH$
  393.         AddSectionFilesToCopyList "Indeo-ini", SrcDir$, WINPATH$
  394. END SUB
  395.  
  396.  
  397. '**
  398. '** Purpose:
  399. '**     Builds the copy list and installs Video for Windows runtime drivers
  400. '** Arguments:
  401. '**     none.
  402. '** Returns:
  403. '**     none.
  404. '*************************************************************************
  405. SUB InstallVfW STATIC
  406.         WriteToLogFile "InstallVfW"
  407.         SetTitle DRVTITLE
  408.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  409.  
  410.         BuildVfW
  411.  
  412.         SetRestartDir WINPATH$
  413.         CopyFilesInCopyList
  414.         WriteToLogFile "VfW files copied"
  415.  
  416.         IF VflatdPresent() = 0 THEN
  417.            CreateSysIniKeyValue WINPATH$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  418.         END IF
  419.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  420.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  421.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  422.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  423.         I% = DoesIniKeyExist (WINPATH$+"system.ini", "Drivers", "VIDC.RT21")
  424.         IF I% = 0  THEN
  425.            CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  426.         END IF
  427.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  428.         CreateIniKeyValue WINPATH$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  429.         CreateIniKeyValue WINPATH$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  430.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  431.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  432.         CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  433.         CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  434.         CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  435.         CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  436.  
  437.         WriteToLogFile "Running Regedit"
  438.         Run ("regedit.exe /s " + MakePath(WINPATH$, "mplayer.reg"))
  439.         Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "OLE2.reg"))
  440.         Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "cleanup.reg"))
  441.  
  442.         WriteToLogFile "Putting Media Player in Accessories group"
  443.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  444.  
  445.         WriteToLogFile "Running Profdisp"
  446.         Run ("profdisp.exe")
  447.  
  448. END SUB
  449.  
  450.  
  451.  
  452. '**
  453. '** Purpose:
  454. '**     Builds the copy list and installs App software.
  455. '** Arguments:
  456. '**     none.
  457. '** Returns:
  458. '**     none.
  459. '*************************************************************************
  460. SUB InstallApp STATIC
  461.         WriteToLogFile "InstallApp"
  462.         SetTitle APPTITLE
  463.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  464.         CreateDir DESTPATH$, cmoNone
  465.  
  466.         WriteToLogFile ""
  467.         WriteToLogFile "  Source directory: '" + SrcDir$ + "'"
  468.         WriteToLogFile "  User chose destination path: '" + DESTPATH$ + "'"
  469.         WriteToLogFile "  User chose CD-ROM path: '" + CDPATH$ + "'"
  470.         WriteToLogFile "  User record path: '" + RECPATH$ + "'"
  471.         WriteToLogFile "  Windows directory: '" + WINPATH$ + "'"
  472.         WriteToLogFile "  Windows system directory: '" + WINSYSPATH$ + "'"
  473.         WriteToLogFile ""
  474.  
  475.         ClearCopyList
  476.         AddSectionFilesToCopyList "Files", SrcDir$, DESTPATH$
  477.         CopyFilesInCopyList
  478.         WriteToLogFile "App files copied"
  479.  
  480.         ini$ = MakePath(WINPATH$, INIFILE)
  481.         CreateIniKeyValue ini$, "FilePaths", "RunPath", MakePath(DESTPATH$,"") , cmoOverwrite
  482.         CreateIniKeyValue ini$, "FilePaths", "VideoPath", MakePath(CDPATH$,"") , cmoOverwrite
  483.         CreateIniKeyValue ini$, "FilePaths", "AudioPath", MakePath(CDPATH$,"") , cmoOverwrite
  484.         CreateIniKeyValue ini$, "FilePaths", "GraphicPath", MakePath(CDPATH$,"") , cmoOverwrite
  485.         CreateIniKeyValue ini$, "FilePaths", "AltGraphicPath", "", cmoOverwrite
  486.         CreateIniKeyValue ini$, "FilePaths", "StudentFile", MakePath(RECPATH$,"MCWFY.REC") , cmoOverwrite
  487.  
  488.         CreateProgmanGroup PROGGROUP, "", cmoNone
  489.         ShowProgmanGroup  PROGGROUP, 1, cmoNone
  490.         CreateProgmanItem PROGGROUP, PROGITEM, MakePath(DESTPATH$,PROGEXE), "", cmoOverwrite
  491.  
  492. END SUB
  493.  
  494.  
  495.  
  496. '**
  497. '** Purpose:
  498. '**     Appends a file name to the end of a directory path,
  499. '**     inserting a backslash character as needed.
  500. '** Arguments:
  501. '**     szDir$  - full directory path (with optional ending "\")
  502. '**     szFile$ - filename to append to directory
  503. '** Returns:
  504. '**     Resulting fully qualified path name.
  505. '*************************************************************************
  506. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  507.     IF szDir$ = "" THEN
  508.         MakePath = szFile$
  509.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  510.         MakePath = szDir$ + szFile$
  511.     ELSE
  512.         MakePath = szDir$ + "\" + szFile$
  513.     END IF
  514. END FUNCTION
  515.  
  516.